hysop.backend.device.opencl.opencl_types module

class hysop.backend.device.opencl.opencl_types.OpenClTypeGen(device, context, platform, fbtype='float', float_dump_mode='dec', use_short_circuit_ops=False, unroll_loops=False)[source]

Bases: TypeGen

__repr__()[source]

Used to hash in OpenClKernelAutotuner.autotuner_config_key()

cl_requirements()[source]
device_has_ftype(device)[source]
static devicelessTypegen()[source]

Sometimes we do not need structs and code generation is device independent.

dtype_from_str(stype)[source]
dump_expr(expr, symbol2vars=None, **printer_settings)[source]

Print sympy expression expr as OpenCL code. Sympy symbols may be replaced using symbol2vars dictionnary. This dumper uses OpenClTypeGen.dump for floats and quotients. See hysop.backend.device.opencl.opencl_printer.OpenClPrinter

ftype_build_options()[source]
get_precision_opts()[source]

Check if device is capable to work with given precision and returns build options considering this precision

opencl_version()[source]
opencl_version_greater(major, minor)[source]
class hysop.backend.device.opencl.opencl_types.TypeGen(fbtype='float', float_dump_mode='dec')[source]

Bases: object

dump(val)[source]
dumped_type(val)[source]
hysop.backend.device.opencl.opencl_types.basetype(fulltype)[source]
hysop.backend.device.opencl.opencl_types.cl_type_to_dtype(cl_type)[source]
hysop.backend.device.opencl.opencl_types.cl_vec_type_to_scalar_and_count(cl_vec_type)[source]
hysop.backend.device.opencl.opencl_types.components(fulltype)[source]
hysop.backend.device.opencl.opencl_types.doublen(n)[source]
hysop.backend.device.opencl.opencl_types.float_to_dec_str(f, fbtype)[source]

sf = (sign, mantissa, exponent)

hysop.backend.device.opencl.opencl_types.float_to_hex_str(f, fbtype)[source]
hysop.backend.device.opencl.opencl_types.intn(n)[source]
hysop.backend.device.opencl.opencl_types.itype(fulltype)[source]
hysop.backend.device.opencl.opencl_types.make_doublen(vals, n, dval=0)[source]
hysop.backend.device.opencl.opencl_types.make_intn(vals, n, dval=0)[source]
hysop.backend.device.opencl.opencl_types.make_simplen(vals, n, dval=0)[source]
hysop.backend.device.opencl.opencl_types.make_typen(btype)[source]
hysop.backend.device.opencl.opencl_types.make_uintn(vals, n, dval=0)[source]
hysop.backend.device.opencl.opencl_types.mangle_vtype(fulltype)[source]
hysop.backend.device.opencl.opencl_types.np_dtype(fulltype)[source]
hysop.backend.device.opencl.opencl_types.npmake(dtype)[source]
hysop.backend.device.opencl.opencl_types.simplen(n)[source]
hysop.backend.device.opencl.opencl_types.typen(btype, n)[source]
hysop.backend.device.opencl.opencl_types.uintn(n)[source]
hysop.backend.device.opencl.opencl_types.uitype(fulltype)[source]
hysop.backend.device.opencl.opencl_types.vtype(basetype, N)[source]
hysop.backend.device.opencl.opencl_types.vtype_access(i, N, mode='hex')[source]
hysop.backend.device.opencl.opencl_types.vtype_component_adressing(i, mode='hex')[source]